package com.github.yoojia.flow.util;

import com.github.yoojia.flow.Event;
import com.squareup.moshi.Moshi;

import java.io.IOException;
import java.util.Map;

/**
 * @author 陈小锅 (yoojiachen@gmail.com)
 * @since 1.0.0
 */
public class JSONSerializer {

    private JSONSerializer() {

    }

    private static final Moshi MOSHI = new Moshi.Builder()
            .build();

    /**
     * 从JSON字符串中反序列化成Event对象
     *
     * @param jsonText JSON文本
     * @return Event对象
     * @throws IOException IOE
     */
    public static Event eventFromJSONText(String jsonText) throws IOException {
        return MOSHI.adapter(Event.class)
                .fromJson(jsonText);
    }

    /**
     * 将Event对象序列化成JSON文本。
     *
     * @param event Event对象
     * @return JSON文本
     */
    public static String eventToJSONText(Event event) {
        return MOSHI.adapter(Event.class)
                .toJson(event);
    }

    /**
     * 将Map对象转换成JSON字符串
     *
     * @param map Map对象
     * @return JSON文本
     */
    public static String mapToJSONText(Map map) {
        return MOSHI.adapter(Map.class)
                .toJson(map);
    }

}
